www.gusucode.com > C 模拟ATM自动取款机源代码(TXT文件存储)-源码程序 > C 模拟ATM自动取款机源代码(TXT文件存储)-源码程序/code/ATM - 副本/ATM/operatiun.cpp
//Download by http://www.NewXing.com #include "operation.h" #include "change.h" /************用户名密码结构体***************/ struct newuser { char cPsw[7]; char cID[13]; }user; /********************存取款结构体****** *******/ struct SavingRecord { double sum; //存款额 double balance; //余额 char date[20];//存款时间 }user1; //输入密码 void inputpsw() { char c; int i; char cPsw[7]=""; for (i=0;i<7;i++) { c=_getch(); if (c=='B'||c=='b') { logFace(); log(); break; } //判断是否为数字 else if ((c>=48&&c<=83)&&(i<6)) { printf("*"); } else if ((c==13)&&(i==6)) { break; } else i--; if ((c==8)&&(i>=0)) { printf("\b\b \b"); //输入回退重新输入密码 i--; } cPsw[i]=(c+2); //对输入数据进行加密 } cPsw[6]='\0'; strcpy(user.cPsw,cPsw); } //用户名 void inputID() { char d; int i; char cID[13]; for (i=0;i<13;i++) { d=_getch(); if (d=='b'||d=='B') { logFace(); log(); break; } if ((d>47)&&(d<58)&&i<12) { printf("%c ",d); cID[i] = d; } else if ((d==13)&&(i==12)) { break; } else { i--; if((d==8)&&(i>=0)) { printf("\b\b\b \b"); //输入回退重新输入密码 i--; } } } cID[12]='\0'; strcpy(user.cID,cID); } //check ID bool checkID() { char cnpwd[7]=""; bool bEnd=false; char cID[13]="" ; char cPsw[7]=""; FILE *fp; fp = fopen("user.txt","rw"); while(1) { fseek(fp,0,1); int nsk=fscanf(fp,"%s\n%s",cID,cPsw); if (nsk==-1) { bEnd=true; break;} if(strcmp(user.cID,cID)==0) { bEnd = false; break; } else bEnd = true; } fclose(fp); return bEnd; } //check pwd bool checkpwd() { char cnpwd[7]=""; bool bEnd=false; char cID[13]="" ; char cPsw[7]=""; FILE *fp; fp = fopen("user.txt","rw"); while(1) { fseek(fp,0,1); int nsk=fscanf(fp,"%s\n%s",cID,cPsw); if (nsk==-1) { bEnd = false; break; } if((strcmp(user.cID,cID)==0)&&(strcmp(user.cPsw,cPsw)==0))//比较输入帐号和密码是否一致 { bEnd = true; break; } } fclose(fp); return bEnd; } //登录操作 void login() { FILE *fp; bool bEnd=false; char cID[13]=""; char cPwd[7]=""; int num=0; //记录密码错误次数 fp=fopen("user.txt","rw"); MoveCursorTo(24,9); SetTextColor(15,8); inputID(); while (checkID()==true) { MoveCursorTo(48,9); SetTextColor(12,9); printf("账户不存在!"); _getch(); MoveCursorTo(48,9); SetTextColor(9,2); printf(" "); MoveCursorTo(48,9); SetTextColor(9,2); printf(" "); MoveCursorTo(24,9); SetTextColor(15,8); printf(" "); MoveCursorTo(24,9); inputID(); } MoveCursorTo(23,13); SetTextColor(15,8); inputpsw(); while(checkpwd()== false) //输入密码不正确,重新输入 { num=num+1; MoveCursorTo(50,13); SetTextColor(12,9); printf("密码错误,请重新输入!"); _getch(); MoveCursorTo(50,13); SetTextColor(9,2); printf(" "); MoveCursorTo(23,13); SetTextColor(15,8); printf(" "); if (num==3) // 判断密码是否错误了3次 { MoveCursorTo(4,16); SetTextColor(12,9); printf("密码错误3次,你的账户被锁!请持相关证件来领取!任意键程序结束!"); MoveCursorTo(4,25); exit(0); } MoveCursorTo(23,13); SetTextColor(15,8); inputpsw(); } fclose(fp); operFace(); choose(); } //************获取时间******** char* CurTime() //从CPU获取系统当前时间 { //系统自定义结构体函数,并对其字符输出形式进行优化 char str[40]={""},year[5],month[3],date[3],hour[5],min[6],sec[6]; tm * curTime; time_t long_time; time( &long_time ); curTime = localtime( &long_time ); itoa(curTime->tm_year+1900,year,10); itoa(curTime->tm_mon+1,month,10); itoa(curTime->tm_mday,date,10); itoa(curTime->tm_hour,hour,10); itoa(curTime->tm_min,min,10); itoa(curTime->tm_sec,sec,10); strcpy(str,year); strcat(str,"/"); if(strlen(month)==1) { strcat(str,"0"); strcat(str,month); } else { strcat(str,month); } strcat(str,"/"); if(strlen(date)==1) { strcat(str,"0"); strcat(str,date); } else { strcat(str,date); } strcat(str,"/"); if(strlen(hour)==1) { strcat(str,"0"); strcat(str,hour);} else { strcat(str,hour); } strcat(str,":"); if(strlen(min)==1) { strcat(str,"0");strcat(str,min);} else {strcat(str,min);} strcat(str,":"); if(strlen(sec)==1) {strcat(str,"0");strcat(str,sec);} else{strcat(str,sec); } return str; } ////////////////////////////注册函数////////////////////////////////////////////// void reginter() { char firstpwd[7]; //记录第一次密码输入 char secondpwd[7]; char cID[13]; //记录账户的输入 MoveCursorTo(33,6); SetTextColor(15,8); inputID(); while (checkID()==false) { MoveCursorTo(33,8); SetTextColor(12,9); printf("账户已经存在"); _getch(); MoveCursorTo(33,8); SetTextColor(9,2); printf(" "); MoveCursorTo(33,6); SetTextColor(15,8); printf(" "); MoveCursorTo(33,6); inputID(); } MoveCursorTo(33,12); SetTextColor(15,8); inputpsw(); strcpy(firstpwd,user.cPsw); MoveCursorTo(33,18); inputpsw(); strcpy(secondpwd,user.cPsw); while (strcmp(firstpwd,secondpwd)!=0) //两次密码比较是否一致 { MoveCursorTo(33,20); SetTextColor(12,9); printf("密码输入不相同"); _getch(); MoveCursorTo(33,20); SetTextColor(9,2); printf(" "); MoveCursorTo(33,12); printf(" "); MoveCursorTo(33,18); printf(" "); MoveCursorTo(33,12); SetTextColor(15,8); inputpsw(); strcpy(firstpwd,user.cPsw); MoveCursorTo(33,18); SetTextColor(15,8); inputpsw(); strcpy(secondpwd,user.cPsw); if (strcmp(firstpwd,secondpwd)==0) break; } FILE *fp; fp = fopen("user.txt","a"); //以追加的形式打开文本 if(fp != NULL) { fprintf(fp,"%s\n%s\n",user.cID,user.cPsw); //格式化写进数据 } fclose(fp); FILE *fp1; //注册成功,建立存款文件 strcpy(cID,user.cID); strcat(cID,"deposit.txt"); fp1 = fopen(cID,"w"); fclose(fp1); FILE *fp2; //建立取款文件 strcpy(cID,user.cID); strcat(cID,"cWith.txt"); fp2 = fopen(cID,"w"); fclose(fp2); FILE *fp3; //建立转帐文件 strcpy(cID,user.cID); strcat(cID,"Tran.txt"); fp3 = fopen(cID,"w"); fclose(fp3); FILE *fp4 ; //建立总余额文件 strcpy(cID,user.cID); strcat(cID,"remain.txt"); fp4 = fopen(cID,"w"); fclose(fp4); MoveCursorTo(33,20); SetTextColor(15,9); printf("注册成功!按“E”返回!请牢记你的密码"); while(1) { char cA=_getch(); if((cA==69)||(cA==101)) { logFace(); //返回登录注册选择界面 log(); break; } } } /*******************存款******************/ void deposit() { char d ; char cMoney[7]="" ; char remain[26]; double dZ = 0.00; double dMoney = 0.00; depositFace(); MoveCursorTo(32,7); SetTextColor(15,9); for(int i = 0; i<7; i++) //输入字符长度为6 { d = _getch(); if( (d == 101)||(d ==69) ) { //返回操作界面 operFace(); choose(); break; } if((d>47 && d<58) && i<6 ) { printf("%c ",d); cMoney[i] = d; } else if(d==13) //不足6位,用a代替 { int k = i+1; for(k;k<7;k++) { cMoney[k]= 'a'; cMoney[i]=cMoney[k]; } break; } else i--; if((d==8) && (i>=0)) { printf("\b\b\b \b"); //删除输入 i--; } } cMoney[7]='\0'; double dX = atof(cMoney); //将数组字符串型转为double /*if (dX%100!=0) { MoveCursorTo(20,18); SetTextColor(15,9); printf("输入不和法,你输入的数值必须是100的倍数"); goto da; }*/ // double dX=atof(dX); //double dS = 0.00; char cID[26]; double money = 0.00; double um = 0.00; strcpy(user1.date,CurTime()); //将系统时间传给user1.date FILE *fp4; strcpy(remain,user.cID); //读取帐户余额dZ记录 strcat(remain,"remain.txt"); fp4 = fopen(remain,"r"); //打开余额记录 if(fp4 == NULL) dZ = 0.00; else { char cA[100]; fscanf(fp4,"%s\t%lf",cA,&um); dZ = um ; } fclose(fp4); user1.balance =dZ + dX; FILE *fp1; strcpy(cID,user.cID); strcat(cID,"deposit.txt"); fp1 = fopen(cID,"a"); //写入存款记录 if(fp1 != NULL) { fprintf(fp1,"%s\t+%010.2lf\t%010.2lf\n",user1.date,dX,user1.balance); } fclose(fp1); fp4 = fopen(remain,"w"); fprintf(fp4,"%s\t%.2lf\n",user1.date,user1.balance); fclose(fp4); MoveCursorTo(20,18); SetTextColor(15,9); printf("存款成功,帐户余额%.2lf.",user1.balance); while(1) { char m = _getch(); if((m==69)||(m==101)){ MoveCursorTo(20,18); SetTextColor(9,2); printf(" "); //返回操作界面 operFace(); choose(); } } } /*******************取款******************/ void withdraw() { FILE *fp4; char cMoney[7]="" ; char d ; char cWith[24]; char remain[24]; double dN = 0.00; //取款总额 double dZ = 0.00; //帐户余额 double money = 0.00; double um = 0.00; double un = 0.00; int nB = 0 ; double dMoney ; choicemoneyFace(); nB = inputmoney(); if(nB == 1) dMoney = 100.00; if(nB == 2) dMoney = 200.00; if(nB == 3) dMoney = 300.00; if(nB == 4) dMoney = 500.00; if(nB == 5) { MoveCursorTo(28,21); SetTextColor(15,9); for(int i = 0; i<7; i++) //输入字符长度为6 { d = _getch(); if((d>47 && d<58) && i<6 ) { printf("%c ",d); cMoney[i] = d; } else if(d==13) //不足6位,用a代替 { int k = i+1; for(k;k<7;k++) { cMoney[k]= 'a'; cMoney[i]=cMoney[k]; } break; } else i--; if((d==8) && (i>=0)) { printf("\b\b\b \b"); //删除输入 i--; } } cMoney[7]='\0'; dMoney = atof(cMoney); } strcpy(user1.date,CurTime()); strcpy(remain,user.cID); //读取帐户余额dZ记录 strcat(remain,"remain.txt"); fp4 = fopen(remain,"r"); if(fp4 == NULL) dZ = 0.00; else { fscanf(fp4,"%s\t%lf",user1.date,&um); dZ = um ; } fclose(fp4); while(1) { if(dMoney<=dZ) break; if(dMoney>dZ) MoveCursorTo(28,21); SetTextColor(15,9); printf("余额不足,请重新输入!"); char d = _getch(); choicemoneyFace(); nB = inputmoney(); if(nB == 1) dMoney = 100.00; if(nB == 2) dMoney = 200.00; if(nB == 3) dMoney = 300.00; if(nB == 4) dMoney = 500.00; if(nB == 5) { MoveCursorTo(28,21); SetTextColor(15,9); for(int i = 0; i<7; i++) //输入字符长度为6 { d = _getch(); if((d>47 && d<58) && i<6 ) { printf("%c ",d); cMoney[i] = d; } else if(d==13) //不足6位,用a代替 { int k = i+1; for(k;k<7;k++) { cMoney[k]= 'a'; cMoney[i]=cMoney[k]; } break; } else i--; if((d==8) && (i>=0)) { printf("\b\b\b \b"); //删除输入 i--; } } cMoney[7]='\0'; dMoney = atof(cMoney); } } strcpy(user1.date,CurTime()); //将系统时间传给user1.date user1.balance = dZ-dMoney ; //计算帐户余额 strcpy(cWith,user.cID); strcat(cWith,"cWith.txt"); FILE *fp2; //写入取款文件 fp2 = fopen(cWith,"a"); fprintf(fp2,"%s\t-%.2lf\t%.2lf\n",user1.date,dMoney,user1.balance); fclose(fp2); fp4 = fopen(remain,"w"); fprintf(fp4,"%s\t%.2lf\n",user1.date,user1.balance); fclose(fp4); MoveCursorTo(20,19); SetTextColor(15,9); printf("取款成功,帐户余额%.2lf.按任意键返回",user1.balance); _getch(); //返回操作界面 operFace(); choose(); } /*******************转帐操作**********************/ void Tran() { char cTran[24]; char cInto[24]; char firstinputID[13] =""; char secondinputID[13] = ""; char cT[13] ; //记录登录帐号 char d ; char cMoney[7]="" ; char remain[26]; double dZ = 0.00; double dMoney = 0.00; double um = 0.00; double dU = 0.00; //转入目标文件余额 TranFace(); strcpy(cT,user.cID); //cT表示登录帐户ID //***************打开帐户余额***************** FILE *fp4; strcpy(remain,user.cID); //读取帐户余额dZ记录 strcat(remain,"remain.txt"); fp4 = fopen(remain,"r"); //打开余额记录 if(fp4 == NULL) dZ = 0.00; else { fscanf(fp4,"%s\t%lf",user1.date,&um); dZ = um ; } fclose(fp4); //**************得到帐户余额***************** //**************帐号输入**************** MoveCursorTo(32,7); SetTextColor(15,8); inputID(); strcpy(firstinputID,user.cID); while(strcmp(firstinputID,cT)==0) { MoveCursorTo(32,10); SetTextColor(12,9); printf("不能给自己转帐,请重新输入 "); _getch(); MoveCursorTo(32,10); SetTextColor(12,9); printf(" "); MoveCursorTo(32,7); SetTextColor(15,8); printf(" "); MoveCursorTo(32,7); SetTextColor(15,8); inputID() ; strcpy(firstinputID,user.cID); } while(checkID() == true) { MoveCursorTo(32,10); SetTextColor(12,9); printf("帐号不存在,请重新输入 "); _getch(); MoveCursorTo(32,10); SetTextColor(12,9); printf(" "); MoveCursorTo(32,7); SetTextColor(15,8); printf(" "); MoveCursorTo(32,7); SetTextColor(15,8); inputID() ; strcpy(firstinputID,user.cID); } MoveCursorTo(32,12); SetTextColor(15,8); inputID(); strcpy(secondinputID,user.cID); while(strcmp(firstinputID,secondinputID)!=0) { MoveCursorTo(32,15); SetTextColor(12,9); printf("输入帐号不相同,请重新输入!\n"); _getch(); MoveCursorTo(32,15); SetTextColor(12,9); printf(" "); MoveCursorTo(32,7); SetTextColor(15,8); printf(" "); MoveCursorTo(32,12); SetTextColor(15,8); printf(" "); MoveCursorTo(32,7); SetTextColor(15,8); inputID(); strcpy(firstinputID,user.cID); while(checkID() == true) { MoveCursorTo(32,10); SetTextColor(12,9); printf("帐号不存在,请重新输入 "); _getch(); MoveCursorTo(32,10); SetTextColor(12,9); printf(" "); MoveCursorTo(32,7); SetTextColor(15,8); printf(" "); MoveCursorTo(32,7); SetTextColor(15,8); inputID() ; strcpy(firstinputID,user.cID); } printf("%s",firstinputID); MoveCursorTo(32,12); SetTextColor(15,8); inputID(); strcpy(secondinputID,user.cID); printf("%s",secondinputID); if (strcmp(firstinputID,secondinputID)==0) break; } //*************************** strcpy(user.cID,cT); //***************输入转帐金额******************* MoveCursorTo(32,17); SetTextColor(15,9); for(int i = 0; i<7; i++) //输入字符长度为6 { d = _getch(); if((d>47 && d<58) && i<6 ) { printf("%c ",d); cMoney[i] = d; } else if(d==13) //不足6位,用a代替 { int k = i+1; for(k;k<7;k++) { cMoney[k]= 'a'; cMoney[i]=cMoney[k]; } break; } else i--; if((d==8) && (i>=0)) { printf("\b\b\b \b"); //删除输入 i--; } } cMoney[7]='\0'; double dX = atof(cMoney); //将数组字符串型转为double //***************转帐金额输入结束************** while(1) { if(dX<=dZ) break; if(dX>dZ) { MoveCursorTo(32,17); SetTextColor(15,9); printf(" "); MoveCursorTo(32,21); SetTextColor(15,9); printf(" "); MoveCursorTo(32,21); SetTextColor(15,9); printf("余额不足,请重新输入"); MoveCursorTo(32,17); SetTextColor(15,9); for(int i = 0; i<7; i++) //输入字符长度为6 { d = _getch(); if((d>47 && d<58) && i<6 ) { printf("%c ",d); cMoney[i] = d; } else if(d==13) //不足6位,用a代替 { int k = i+1; for(k;k<7;k++) { cMoney[k]= 'a'; cMoney[i]=cMoney[k]; } break; } else i--; if((d==8) && (i>=0)) { printf("\b\b\b \b"); //删除输入 i--; } } cMoney[7]='\0'; double dX = atof(cMoney); } } //****************验证余额结束,开始写文件*************** MoveCursorTo(20,21); SetTextColor(15,9); printf("确定转入请按Enter,放弃操作请按E退出"); strcpy(user1.date,CurTime()); //将系统时间传给user1.date char m = _getch(); while(1) { if((m==69)||(m==101)) { //返回操作界面 operFace(); choose(); break; } if(m==13)break; } FILE *fp3; //建立转帐文件,写入转出信息 strcpy(cTran,cT); strcat(cTran,"Tran.txt"); fp3 = fopen(cTran,"a"); fprintf(fp3,"%s\t%s\t-%.2lf\n",user1.date,firstinputID,dX); fclose(fp3); char cTranIn[20]; FILE *fp5; strcpy(cTranIn,firstinputID); strcat(cTranIn,"Tran.txt"); fp5 = fopen(cTranIn,"a"); fprintf(fp5,"%s\t%s\t+%.2lf\n",user1.date,cT,dX); fclose(fp5); FILE *fp; user1.balance = dZ - dX; fp4 = fopen(remain,"w"); fprintf(fp4,"%s\t%.2lf\n",user1.date,user1.balance); fclose(fp4); strcpy(cInto,firstinputID); strcat(cInto,"remain.txt"); fp = fopen(cInto,"r"); //打开目标文件总余额文件 fscanf(fp,"%s\t%.2lf\n",user1.date,dU); fclose(fp); fp = fopen(cInto,"w"); //写入转帐金额到目标文件 double dQ = 0.00; dQ = dU + dX; fprintf(fp,"%s\t%.2lf\n",user1.date,dQ); fclose(fp); MoveCursorTo(20,21); SetTextColor(15,9); printf("转帐成功,帐户余额%.2lf.按任意键返回",user1.balance); _getch(); //返回操作界面 operFace(); choose(); //break; } /********************修改密码*********************************/ void changepsw() { char oldpsw[7]; char newpsw1[7]; char newpsw2[7]; strcpy(oldpsw,user.cPsw); changepswFace(); MoveCursorTo(32,7); SetTextColor(15,8); inputpsw(); while(1) { if(strcmp(oldpsw,user.cPsw)==0) break; else { MoveCursorTo(22,20); SetTextColor(15,9); printf("旧密码输入错误,Enter重新输入;E退出"); char c = _getch(); if((c==101)||(c==69)) { //返回操作界面 operFace(); choose(); break; } else { MoveCursorTo(22,20); SetTextColor(15,9); printf(" "); MoveCursorTo(32,7); SetTextColor(15,8); printf(" "); MoveCursorTo(32,7); SetTextColor(15,8); inputpsw(); } } } MoveCursorTo(50,7); SetTextColor(15,9); printf("(6位)"); MoveCursorTo(32,12); SetTextColor(15,8); inputpsw(); strcpy(newpsw1,user.cPsw); MoveCursorTo(32,17); SetTextColor(15,8); inputpsw(); strcpy(newpsw2,user.cPsw); while(1) { if( strcmp(newpsw1,newpsw2)==0) break; else { MoveCursorTo(22,20); SetTextColor(15,9); printf("新密码输入不一至,Enter重新输入;E退出"); char c =_getch(); if((c==101)||(c==69)) { //返回操作界面 operFace(); choose(); break; } if(c==13) { MoveCursorTo(22,20); SetTextColor(12,9); printf(" "); MoveCursorTo(32,12); SetTextColor(15,8); printf(" "); MoveCursorTo(32,17); SetTextColor(15,8); printf(" "); MoveCursorTo(32,12); SetTextColor(15,8); inputpsw(); strcpy(newpsw1,user.cPsw); MoveCursorTo(32,17); SetTextColor(15,8); inputpsw(); strcpy(newpsw2,user.cPsw); } } } FILE *fp; fp = fopen("user.txt","r+"); char cAccount[13]; char cPassword[7]; while(!feof(fp)) { fscanf(fp,"%s%s",cAccount,cPassword); if(strcmp(user.cID,cAccount) != 0) { continue; } break; } fseek(fp,-6,1); fprintf(fp,"%s\n",newpsw2); fclose(fp); MoveCursorTo(20,21); SetTextColor(15,9); printf("密码修改成功,按任意E键返回"); char cB = _getch(); while(1) { if((cB==69)||(cB==101)){ //返回操作界面 operFace(); choose(); break; } cB = _getch(); } } ////////////////////////////查询余额////////////////////////////////////////////// void balancefind() { FILE *fp; //文件指针 double dZ=0.0,um=0.0; char remain[26]; strcpy(remain,user.cID); //读取帐户余额dZ记录 strcat(remain,"remain.txt"); fp = fopen(remain,"r"); //打开余额记录 if(fp == NULL) dZ = 0.00; else { char cA[100]; fscanf(fp,"%s\t%lf",cA,&um); dZ = um ; } fclose(fp); MoveCursorTo(33,10); SetTextColor(15,2); printf("%.2lf",dZ); MoveCursorTo(33,13); SetTextColor(15,2); printf("键入0返回主界面"); char a=_getch(); while (1) { if (a=='0') { //返回操作界面 operFace(); choose(); break; } a=_getch(); } } /////////////////////存款记录查询///////////////////////////////////////////////////// void depositlog() { FILE *fp; char deposit[26]; char date[100]; double dM=0.00; double dZ=0.00; char buf[100]; int count=0; int i=4; int num=0; //当前页 int nu=0; //总记录数 int nu1=0; int nu2=0; //总页数 strcpy(deposit,user.cID); strcat(deposit,"deposit.txt"); depositFacefind(); MoveCursorTo(14,2); SetTextColor(7,1); printf(" 存款日期 存款金额 当前余额\n"); fp=fopen(deposit,"r"); while(fgets(buf, sizeof(buf), fp)!=NULL) nu1++; if(nu1%2!=0) nu2=(nu1/2)+1; else nu2=nu1/2; fclose(fp); fp=fopen(deposit,"r"); if(fp==NULL) { MoveCursorTo(33,i); SetTextColor(12,1); printf("您没有存款记录"); MoveCursorTo(0,24); } else { while(1) { count=0; i=4; MoveCursorTo(14,i); SetTextColor(5,1); while(fgets(buf, sizeof(buf), fp)!=NULL) { i++; nu++; count++; MoveCursorTo(14,i); printf("%s\n",buf); if (count==2 || nu==(2*nu2-1)) { num++; MoveCursorTo(30,20); SetTextColor(7,1); printf(" 第 %d 页 共 %d 页",num,nu2); break; } } MoveCursorTo(0,24); while(1) { char c=getch(); if((c=='n' || c=='N') && (nu<nu1)) { break; } if(c=='s' || c=='S') { fseek(fp,0,0); num=0; nu=0; break; } if((c=='e')||(c=='E')) { operFace(); choose(); break; } if((c=='b')||(c=='B')) { logFace(); log(); break; } } continue; } } fclose(fp); } ////////////////////////////取款记录////////////////////////////////////////////// void withlog() { FILE *fp; char cWith[26]; char date[100]; double dM=0.00; double dZ=0.00; char buf[100]; int count=0; int i=4; int num=0; //当前页 int nu=0; //总记录数 int nu1=0; int nu2=0; //总页数 strcpy(cWith,user.cID); strcat(cWith,"cWith.txt"); depositFacefind(); MoveCursorTo(14,2); SetTextColor(7,1); printf(" 取款日期 取款金额 当前余额\n"); fp=fopen(cWith,"r"); while(fgets(buf, sizeof(buf), fp)!=NULL) nu1++; if(nu1%2!=0) nu2=(nu1/2)+1; else nu2=nu1/2; fclose(fp); fp=fopen(cWith,"r"); if(fp==NULL) { MoveCursorTo(33,i); SetTextColor(12,1); printf("您没有存款记录"); MoveCursorTo(0,24); } else { while(1) { count=0; i=4; MoveCursorTo(14,i); SetTextColor(5,1); while(fgets(buf, sizeof(buf), fp)!=NULL) { i++; nu++; count++; MoveCursorTo(14,i); printf("%s\n",buf); if (count==2 || nu==(2*nu2-1)) { num++; MoveCursorTo(30,20); SetTextColor(7,1); printf(" 第 %d 页 共 %d 页",num,nu2); break; } } MoveCursorTo(0,24); while(1) { char c=getch(); if((c=='n' || c=='N') && (nu<nu1)) { break; } if(c=='s' || c=='S') { fseek(fp,0,0); num=0; nu=0; break; } if((c=='e')||(c=='E')) { operFace(); choose(); break; } if((c=='b')||(c=='B')) { logFace(); log(); break; } } continue; } } fclose(fp); } ////////////////////////////转账记录////////////////////////////////////////////// void tranlog() { FILE *fp; char Tran[26]; char date[100]; double dM=0.00; char dZ[100]; char buf[100]; int count=0; int i=4; int num=0; //当前页 int nu=0; //总记录数 int nu1=0; int nu2=0; //总页数 strcpy(Tran,user.cID); strcat(Tran,"Tran.txt"); depositFacefind(); MoveCursorTo(14,2); SetTextColor(7,1); printf(" 转账日期 转入出帐号 转入/转出金额\n"); fp=fopen(Tran,"r"); while(fgets(buf, sizeof(buf), fp)!=NULL) nu1++; if(nu1%2!=0) nu2=(nu1/2)+1; else nu2=nu1/2; fclose(fp); fp=fopen(Tran,"r"); if(fp==NULL) { MoveCursorTo(33,i); SetTextColor(12,1); printf("您没有存款记录"); MoveCursorTo(0,24); } else { while(1) { count=0; i=4; MoveCursorTo(14,i); SetTextColor(5,1); while(fgets(buf, sizeof(buf), fp)!=NULL) { i++; nu++; count++; MoveCursorTo(14,i); printf("%s\n",buf); if (count==2 || nu==(2*nu2-1)) { num++; MoveCursorTo(30,20); SetTextColor(7,1); printf(" 第 %d 页 共 %d 页",num,nu2); break; } } MoveCursorTo(0,24); while(1) { char c=getch(); if((c=='n' || c=='N') && (nu<nu1)) { break; } if(c=='s' || c=='S') { fseek(fp,0,0); num=0; nu=0; break; } if((c=='e')||(c=='E')) { operFace(); choose(); break; } if((c=='b')||(c=='B')) { logFace(); log(); break; } } continue; } } fclose(fp); }